/**
 * React Native App.tsx 完整示例
 * 展示如何正确集成调试系统和网络拦截
 */

import React, { useEffect } from 'react';
import { SafeAreaView, StatusBar, useColorScheme } from 'react-native';
import { Colors } from 'react-native/Libraries/NewAppScreen';

// 1. 首先导入调试配置（必须在最前面）
import { getDebugConfig } from './src/config/debug';

// 2. 设置全局调试配置，供调试客户端使用
global.__DEBUG_CONFIG__ = getDebugConfig();

// 3. 导入调试客户端（必须在调试配置之后）
import './src/utils/debugClient-websocket'; // 使用WebSocket版本

// 4. 导入网络拦截器（必须在调试客户端之后）
import axiosInterceptor from './src/utils/axiosInterceptor';

// 5. 导入您的主要组件
import MainScreen from './src/screens/MainScreen';

function App(): React.JSX.Element {
  const isDarkMode = useColorScheme() === 'dark';

  const backgroundStyle = {
    backgroundColor: isDarkMode ? Colors.darker : Colors.lighter,
  };

  useEffect(() => {
    // 初始化调试系统
    initializeDebugSystem();
  }, []);

  const initializeDebugSystem = async () => {
    try {
      const config = getDebugConfig();
      
      if (config.enabled) {
        console.log('🚀 初始化调试系统...');
        
        // 1. 安装Axios拦截器
        axiosInterceptor.install();
        
        // 2. 记录应用启动日志
        global.$debug.pageEvent('App', 'mounted', {
          environment: config.connectionMode,
          darkMode: isDarkMode,
          timestamp: new Date().toISOString()
        });
        
        // 3. 测试调试连接
        const isConnected = await global.$debug.testConnection();
        
        if (isConnected) {
          global.$debug.info('✅ 调试系统初始化成功', {
            mode: config.connectionMode,
            serverUrl: config.serverUrl,
            webSocket: config.useWebSocket
          });
        } else {
          global.$debug.warn('⚠️ 调试连接失败，使用降级模式');
        }
        
        // 4. 记录设备信息
        global.$debug.info('📱 设备信息', {
          platform: 'React Native',
          isDarkMode,
          userAgent: global.$debug._getUserAgent ? global.$debug._getUserAgent() : 'Unknown'
        });
        
        // 5. 设置USB调试提示（如果是USB模式）
        if (config.connectionMode === 'usb') {
          global.$debug.info('🔌 USB调试模式', {
            tip: '确保已执行: adb reverse tcp:3000 tcp:3000',
            serverUrl: config.serverUrl
          });
        }
        
      } else {
        console.log('🔕 调试系统已禁用');
      }
      
    } catch (error) {
      console.error('❌ 调试系统初始化失败:', error);
      // 即使调试系统失败，也不影响应用正常运行
    }
  };

  return (
    <SafeAreaView style={backgroundStyle}>
      <StatusBar
        barStyle={isDarkMode ? 'light-content' : 'dark-content'}
        backgroundColor={backgroundStyle.backgroundColor}
      />
      <MainScreen />
    </SafeAreaView>
  );
}

export default App;

